/*
 * @Author: Qimu
 * @Date: 2020-04-23 13:38:59
 * @LastEditors: Qimu
 * @LastEditTime: 2020-07-12 02:39:01
 * @Description: file content
 * @FilePath: \vue-admin-koa2\koa2_api\controllers\role.js
 */

const Role = require('../module/schama/role');
const query = require('../module/utlis/query');

//角色管理业务
class RoleController {
  //新增角色信息数据(POST)
  static async setRole(ctx) {
    const {
      role_name,
      role_sketch,
      role_status
    } = ctx.request.body;
    const data = {
      role_name, role_sketch, role_status
    }
    await query.save(Role, data);
    ctx.body = {
      'meta': {
        'status': 200,
        'message': `${role_name}-信息保存成功!`
      }
    }
  }

  //获取角色列表数据(GET)
  static async listRole(ctx) {
    let queryRoleResult = await query.find(Role);//查找角色数据结果
    console.log('queryRoleResult', queryRoleResult);
    if (queryRoleResult.length > 0) {
      ctx.body = {
        'data': queryRoleResult,
        'meta': {
          'status': 200,
          'message': '角色列表获取成功!'
        }
      }
    } else {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 500,
          'message': '角色列表获取失败!'
        }
      }
    }
  }

  //修改角色状态
  static async updateRole(ctx) {
    const { _id, role_name, role_status } = ctx.request.body;
    let updateRoleResult
    updateRoleResult = await query.updateOne(Role, { _id }, { role_status });//更新角色数据结果
    if (updateRoleResult.ok === 1) {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 200,
          'message': `${role_name}-角色状态编辑成功!`
        }
      }
    } else {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 500,
          'message': `${role_name}-角色状态编辑失败!`
        }
      }
    }
  }

  //提交编辑角色
  static async putEditRole(ctx) {
    let updateRoleResult //编辑角色后变量保存
    const { _id, role_name, role_sketch } = ctx.request.body;
    updateRoleResult = await query.updateOne(Role, { _id }, { role_name, role_sketch });//更新角色数据结果
    if (updateRoleResult.ok === 1) {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 200,
          'message': `${role_name}-角色编辑成功!`
        }
      }
    } else {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 500,
          'message': `${role_name}-角色编辑失败!`
        }
      }
    }
  }

  //删除角色
  static async deleteRole(ctx) {
    let deleteRoleResult
    deleteRoleResult = await query.findByIdAndDelete(Role, { _id: ctx.params.id });//删除角色数据结果
    if (deleteRoleResult) {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 200,
          'message': `${deleteRoleResult.role_name}-角色删除成功!`
        }
      }
    } else {
      ctx.body = {
        'data': {},
        'meta': {
          'status': 500,
          'message': `${deleteRoleResult.role_name}-角色删除失败!`
        }
      }
    }
  }
}

exports = module.exports = RoleController
